/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package projetoimc;

/**
 *
 * @author Ditzz
 */
public class MetodoIMC {

    private double imc;
    private String condicao;

    public MetodoIMC() {
    }

/*    public MetodoIMC(double imc, String condicao) {
        this.imc = imc;
        this.condicao = condicao;
    }
*/
    public void fazerCalculo(double peso, double altura) throws RuntimeException {
        if (peso <= 0) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if (Double.isNaN(peso)) {
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        }
        if ((0 < altura) && (altura < 3)) {
            this.imc = (peso / Math.pow(altura, 2));
        } else {
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
        }

    }

    public void classificar(char sexo) throws RuntimeException {
        if ((sexo != 'F') && (sexo != 'M')) {
            throw new RuntimeException("Falha: É necessário informar o sexo (M, F)");
        }
        if (sexo == 'F') {
            if (this.imc < 19.1) {
                this.condicao = "Abaixo do peso";
            }
            if (this.imc >= 19.1 && this.imc < 25.8) {
                this.condicao = "No peso normal";
            }
            if (this.imc >= 25.8 && this.imc < 27.3) {
                this.condicao = "Marginalmente acima do peso";
            }
            if (this.imc >= 27.3 && this.imc < 32.3) {
                this.condicao = "Acima do peso ideal";
            }
            if (this.imc >= 32.3) {
                this.condicao = "Obeso";
            }
        }
        if (sexo == 'M') {
            if (this.imc < 20.7) {
                this.condicao = "Abaixo do peso";
            }
            if (this.imc >= 20.7 && this.imc < 26.4) {
                this.condicao = "No peso normal";
            }
            if (this.imc >= 26.4 && this.imc < 27.8) {
                this.condicao = "Marginalmente acima do peso";
            }
            if (this.imc >= 27.8 && this.imc < 31.1) {
                this.condicao = "Acima do peso ideal";
            }
            if (this.imc >= 31.1) {
                this.condicao = "Obeso";
            }
        }
    }

    public double getImc() {
        return imc;
    }

    public String getCondicao() {
        return condicao;
    }

}
